package com.toolboxkit.logging;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;

/**
 * 日志打印工具类
 * 提供统一的日志输出接口，基于SLF4J和Logback实现
 */
public class LoggerUtils {
    
    private static final Logger logger = LoggerFactory.getLogger(LoggerUtils.class);
    private static final Marker SECURITY_MARKER = MarkerFactory.getMarker("SECURITY");
    
    /**
     * 打印DEBUG级别日志
     *
     * @param message 日志消息
     */
    public static void debug(String message) {
        logger.debug(message);
    }
    
    /**
     * 打印DEBUG级别日志
     *
     * @param message 日志消息
     * @param throwable 异常对象
     */
    public static void debug(String message, Throwable throwable) {
        logger.debug(message, throwable);
    }
    
    /**
     * 打印INFO级别日志
     *
     * @param message 日志消息
     */
    public static void info(String message) {
        logger.info(message);
    }
    
    /**
     * 打印INFO级别日志
     *
     * @param message 日志消息
     * @param throwable 异常对象
     */
    public static void info(String message, Throwable throwable) {
        logger.info(message, throwable);
    }
    
    /**
     * 打印WARN级别日志
     *
     * @param message 日志消息
     */
    public static void warn(String message) {
        logger.warn(message);
    }
    
    /**
     * 打印WARN级别日志
     *
     * @param message 日志消息
     * @param throwable 异常对象
     */
    public static void warn(String message, Throwable throwable) {
        logger.warn(message, throwable);
    }
    
    /**
     * 打印ERROR级别日志
     *
     * @param message 日志消息
     */
    public static void error(String message) {
        logger.error(message);
    }
    
    /**
     * 打印ERROR级别日志
     *
     * @param message 日志消息
     * @param throwable 异常对象
     */
    public static void error(String message, Throwable throwable) {
        logger.error(message, throwable);
    }
    
    /**
     * 使用SECURITY标记打印INFO级别日志
     *
     * @param message 日志消息
     */
    public static void security(String message) {
        logger.info(SECURITY_MARKER, message);
    }
}